//
// Created by 赵中恒 on 2/1/21.
//

#include "zh_string.h"
#include <jni.h>
#include <string>
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ptrace.h>
#include <android/log.h>
#include <string.h>
#include <filesystem>
#include <dirent.h>

/**
 * 截取字符串
 */
char *strsub(char *str, int start, int end) {
    // 开辟一个字符串去存储我们的数据，开辟多大计算
    // char sub[end-start];
    int len = end - start;
    char *sub = (char *) malloc(len * sizeof(char) + 1);// 记得加上1 ，在 NDK 一般会采用静态的数组存储 char sub[len]
    // malloc 一定要 free
    // 遍历赋值
    str += start;
    for (int i = 0; i < len; i++) {
        sub[i] = *str;
        str++;// 指针往后逻一位
    }
    // 标记字符串结尾，否则 print 无法判断结尾
    sub[len] = '\0';

    // free(sub);

    return sub;
}

//获取TracePid
int get_real_number_for_str(char *raw, const char *tracerId, int start) {
    if (raw == NULL) {
        return 0;
    }

    if (strstr(raw, tracerId) == NULL) {
        return 0;
    }

    //LOGD("---匹配了TracerId: %s\n", raw);
    int end = strlen(raw);
    //LOGD("---字符串长度: %d\n", end);
    char *dest = strsub(raw, start + 2, end - 1);
    //LOGD("---截取后的: %s\n", dest);
    int tid = atoi(dest);
    //LOGD("---转换后的: %d\n", tid);
    return tid;
}